iT邦幫忙

2022 iThome 鐵人賽

DAY 3
0
自我挑戰組

多人連線遊戲背後的原理與實作系列 第 12

Day12 - 遊戲服務器同步(幀同步)

  • 分享至 

  • xImage
  •  

在一款大型多人線上遊戲裡面,難免會需要有非常大量的封包去做來回的傳輸,而現在也有越來越多可以一次好幾十位甚至可以到幾百位的玩家一起連線遊玩的遊戲,這也產生兩種同步方式幀同步與狀態同步。

一. 幀同步(Frame Synchronization)的原理

此種同步方法通常用於需要非常高即時性的遊戲,伺服器主要負責將大家的封包輸入的結果傳送給所有玩家,讓各自的客戶端去作計算並渲染,也因此它有一些條件需要符合。

  1. 同步隨機種子
  2. 玩家傳送的封包需要包含當前幀數
  3. 如果玩家沒有執行任何動作也要傳送一個空的封包

二. 幀同步的優點

  1. 減少封包內資料:因為它大幅減少了封包內的資料,所以它在網路環境差的情況下能有更好的遊戲品質
  2. 降低伺服器負擔:因為伺服器不做遊戲內的計算,因此降低了伺服器的計算負擔。
  3. 可作戰鬥系統回放:因為收集了玩家所有的操作指令,這可以用於戰鬥系統的回放數據。

三. 幀同步的缺點

  1. 頻寬用量不容易控制,當同時遊玩人數越多時,相對狀態同步難以去作優化。
  2. 不適合跨平台遊戲,會有浮點精度問題
  3. 不好處理玩家在遊戲中途加入或退出遊戲

下一篇將會介紹狀態同步的原理


上一篇
Day 11 - 製作連線遊戲時會遇到的問題(延遲補償篇)
下一篇
Day13 - 遊戲服務器同步(狀態同步篇)
系列文
多人連線遊戲背後的原理與實作30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言